package com.micro.modual.service;

import com.micro.core.frame.service.BasicsService;
import com.micro.core.resp.RespJson;
import com.micro.core.resp.RespJsonData;
import com.micro.modual.entity.SystemResourceAuth;
import com.micro.modual.model.bo.systemresourceauth.RoleElementBindBO;
import com.micro.modual.model.bo.systemresourceauth.RoleElementFindBO;
import com.micro.modual.model.bo.systemresourceauth.RoleMenuBindBO;
import com.micro.modual.model.dto.systemresourceauth.RoleResourceElementDTO;

import java.util.List;


/**
*  <h1>角色菜单关联表 接口</h1>
 * @author LevelCoder
 * @version V1.0.0
 * @email LevelCoder@126.com
 * @date 2020-08-04 00:11:10
 */
public interface SystemResourceAuthService extends BasicsService<SystemResourceAuth,Long>{

    /**
     * <h2>角色资源(按钮)相关:角色资源绑定</h2>
     * @param roleElementBO {@link RoleElementBindBO} 角色元素关联请求对象
     * @return
     */
    RespJson bindRoleResourceElement(RoleElementBindBO roleElementBO);

    /**
     * <h2>角色资源(按钮)相关:角色资源移除</h2>
     * @param roleElementBO {@link RoleElementBindBO} 角色元素关联请求对象
     * @return
     */
    RespJson removeRoleResourceElement(RoleElementBindBO roleElementBO);


    /**
     * <h1>根据角色编号菜单编号查询所拥有的元素信息</h1>
     * @param roleElementFindBO {@link RoleElementFindBO} 角色元素绑定 查询请求对象
     * @return {@link RoleResourceElementDTO} 角色元素绑定
     */
    RespJsonData<List<RoleResourceElementDTO>> findRoleResourceElement(RoleElementFindBO roleElementFindBO);

    /**
     * <h2>根据角色编号查询所拥有的菜单权限</h2>
     * @param roleCode  角色编号
     * @return
     */
    RespJsonData<List<String>> findRoleResourceMenu(String roleCode);

    /**
     * <h2>根据角色编号绑定所拥有的菜单权限</h2>
     * @param roleMenuBindBO {@link RoleMenuBindBO} 角色菜单绑定 请求对象
     * @return
     */
    RespJson bindRoleResourceMenu(RoleMenuBindBO roleMenuBindBO);
}
